package org.crl.blogsystem.service;

import cn.hutool.core.util.IdUtil;
import io.minio.MinioClient;
import jakarta.servlet.http.HttpServletResponse;
import org.crl.blogsystem.util.MinioUtil;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;

@Service
public class MinioService implements IMinioService {

    private final MinioUtil minioUtil;

    public MinioService(MinioUtil minioUtil) {
        this.minioUtil = minioUtil;
    }

    /**
     * 文件上传接口
     * @param file 文件
     * @return 文件路径
     */
    public String uploadFile(MultipartFile file) {
        String folder = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        return minioUtil.upload(folder, file);
    }

    /**
     * 带目录的文件上传
     *
     * @param folder 文件夹路径
     * @param file   文件
     * @return 文件路径
     */
    public String uploadFile(String folder, MultipartFile file) {
        return minioUtil.upload(folder, file);
    }

    /**
     * 文件预览链接
     * @param fileName 文件名
     * @return 预览地址
     */
    public String preview(String fileName) {
        return minioUtil.preview(fileName);
    }

    /**
     * 文件下载
     *
     * @param fileName 文件名
     * @param response HttpServletResponse
     */
    public void download(String fileName, HttpServletResponse response) {
        minioUtil.download(fileName, response);
    }

    /**
     * 删除文件
     *
     * @param fileName 文件名
     * @return 是否删除成功
     */
    @Override
    public boolean remove(String fileName) {
        return minioUtil.remove(fileName);
    }

    @Override
    public boolean deleteObjects(String bucketName, String objectName) {
        return false;
    }

    @Override
    public boolean deleteObjectsByDay(String bucketName, int day) {
        return false;
    }
}
